package com.qdlc.p2p.dal.dao;

import java.util.List;

import com.qdlc.p2p.dal.common.dao.BaseDao;
import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.RedEnvelope;
import com.qdlc.p2p.dal.model.RedEnvelopeModel;

/**
 * 红包方案DAO接口
 * @author ylx
 * @version 2.0
 * @since 2015年04月22日 13时52分37秒
 */
public interface RedEnvelopeDao extends BaseDao<RedEnvelope> {

    /**
     * 查询红包方案
     * 
     * @param id 主键ID
     * @return红包方案实体
     */
    RedEnvelope getRedEnvelopeById(long id);
    
    /**
	 * 查询已开启的红包方案
	 * 
	 * @return List<RedEnvelope>
	 */
	List<RedEnvelope> findUsableRedEnvelope();
	
	/**
	 * 查询所有已开启的固定金额红包方案
	 * 
	 * @return List<RedEnvelope>
	 */
	List<RedEnvelope> findUsableRedEnvelopeForFixed();
	
	/**
	 * 查询所有已开启的与操作金额有关的红包方案
	 * 
	 * @return List<RedEnvelope>
	 */
	List<RedEnvelope> findUsableRedEnvelopeForNoFixed();
	
    /**
	 * 分页查询红包方案
	 * 
	 * @param model RedEnvelopeModel
	 * @return PageDataList<RedEnvelopeModel>
	 */
	PageDataList<RedEnvelopeModel> list(RedEnvelopeModel model);
	
	/**
	 * 删除红包方案(伪删除），将红包方案是否删除状态置为删除
	 * 
	 * @param id 红包主键ID
	 */
	void delete(long id);

	/**
	 * 修改红包规则状态
	 * @param status
	 * @param prestatus
	 * @param id
	 * @return
	 */
	int update(byte status, byte prestatus, long id);
}
